LODSW Загрузка строки из слов

Флаги не меняются.

Команда:

LODSW 

Логика:

AX = (DS:SI)
                     if DF = 0
                         SI = SI + 2
                     else
                         SI = SI - 2 

Команда LODSW передает слово, расположенное по адресу DS:SI в AX, а также инкрементирует или декрементирует SI (в зависимости от состояния флага направления DF), чтобы указатель переместился на следующее слово строки.

Операнды Такт байты (слова)ОбращенияБайтыПример
нет операндов16- 1LODSW
(повтор)9+17/rep 1/rep1 REP LODSW

Примечания:
Хотя и разрешется использовать эту команду в повторном режиме, это почти никогда не делается, т.к. это привело бы к постоянному изменению значения в AX.
Следующий пример иллюстрирует пересылку восьми байтов иэ INIT_PORT в порт 250. (Не пробуйте делать этого на вашей машине, если Вы не знаете о назначении порта 250.)

INIT_PORT:
DB     '$CMD0000'      			;Строка, которую мы хотим
                                        	;переслать
                        
CLD                    			;Будем передвигаться в прямом
                                        	;направлении
LEA    SI,INIT_PORT    			;Засылаем в SI стартовый
                                        	;адрес строки
MOV    CX,4            			;Будем пересылать 4 слова
                                        	;(8 байтов)
AGAIN:  LODSW                  		;Загружаем слово в AX...
OUT    250,AX          			;  ...и высылаем его в порт
LOOP   AGAIN
Hosted by uCoz